<?php if ( ! defined('BASEPATH')) exit('No se permite acceso directo al script');
class Util_unidad {
    /* Lista todas las unidades de negocio asociadas al usuario. 
     * Parámetros:
        ** $id_usuario_logueado: id del usuario logueado o del que se desea obtener las unidades de negocio asociadas.
        ** $solo_activas: indica si se deben considerar únicamente las unidades de negocio activas.
     * Retorna: listado de unidades de negocio asociadas al usuario. */
    public function getPorUsuario($id_usuario_logueado, $solo_activas = TRUE)
    {
        $unidad = new Conf_unidad_negocio();
        if($solo_activas) { $unidad->where('activo', TRUE); }
        $unidad->where_related_conf_unidad_usuario('user_usuario_id', $id_usuario_logueado);
        return $unidad->get_iterated();
    }    

    /* Filtra una entidad de acuerdo a las unidades de negocio que el usuario actual tenga asociadas.
     * Parámetros:
        ** $objEntidad: objeto del tipo de la entidad que se desea filtrar. Por ejemplo: Prod_stock.
        ** $id_usuario_logueado: id del usuario logueado o del que se desea obtener las unidades de negocio asociadas.
        ** $solo_activas: indica si se deben considerar únicamente las unidades de negocio activas.

       El objetivo de este método es mostrar al usuario en cuestión, únicamente la información que esté relacionada a las 
       unidades de negocio que a éste le correspondan.
     * Retorna: listado de la entidad filtrado según las unidades de negocio asociadas al usuario. */
    public function filtrarListado($objEntidad, $id_usuario_logueado, $solo_activas = TRUE, $id_unidades = NULL)
    {
        $unidades = $this->getPorUsuario($id_usuario_logueado, $solo_activas);
        $id_unidades = array(0);
        foreach ($unidades as $unidad) {
            $id_unidades[] = $unidad->id;
        }

        $objEntidad->where_in('conf_unidad_negocio_id', $id_unidades);
        return $objEntidad;
    }

    /* Genera un combo de múltiple selección de las unidades de negocio asociadas a un usuario particular.
     * Parámetros:
        ** $id_usuario_logueado: id del usuario logueado o del que se desea obtener las unidades de negocio asociadas.
     * Retorna: nada. Genera un combo múltiple con las unidades de negocio correspondientes al usuario. */
    public function generarCampoFiltro($id_usuario_logueado)
    {
        $unidades = $this->getPorUsuario($id_usuario_logueado, FALSE);
        $opcionesUnidad = array();
        foreach ($unidades as $unidad) { 
            $opcionesUnidad[$unidad->id] = $unidad->nombre;
        }

        if(sizeof($opcionesUnidad) > 1) {
            echo "<div class='col-sm-6'>
                    <label class='col-sm-3 control-label'>Unidad de Negocio</label>
                    <div class='col-sm-6'>" .
                        form_dropdown('f_sel_unidad[]', $opcionesUnidad, array(), "id = 'f_sel_unidad' multiple class = 'form-control' style='height:60px'") .
                    "</div>
                </div>";
        }
    }
}
/* Fin del archivo */